# 定义全局变量
import os

# 获取当前脚本的绝对路径，并向上回溯到根目录
current_script_path = os.path.dirname(os.path.abspath(__file__))
# 根目录
ROOT_DIR = os.path.dirname(current_script_path)
# 百度云提供的 Cityscapes 数据集预训练权重（基于 1024x512 分辨率、80k 迭代训练），用于加速模型收敛或迁移学习
PRETRAINED_URL = "https://bj.bcebos.com/paddleseg/dygraph/cityscapes/deeplabv3_resnet50_os8_cityscapes_1024x512_80k/model.pdparams"
# 数据集存放目录
DATA_ROOT = os.path.join(ROOT_DIR, '..', 'data')
# 训练集file_list文件路径
TRAIN_PATH = os.path.join(DATA_ROOT, 'train.txt')
# 验证集file_list文件路径
VAL_PATH = os.path.join(DATA_ROOT, 'val.txt')
# 测试集file_list文件路径
TEST_PATH = os.path.join(DATA_ROOT, 'test.txt')
# 输出路径
OUTPUT_DIR = os.path.join(ROOT_DIR, '..', 'output')
# 模型训练和visualdl日志文件的保存根路径
EXP_DIR = os.path.join(OUTPUT_DIR, 'log')
# 模型加载地址
MODEL_PATH = os.path.join(OUTPUT_DIR, 'best_model', 'best', 'model.pdparams')
# 测试集预测结果保存根路径
TEST_SAVE_DIR = os.path.join(OUTPUT_DIR, 'results')
# 总体样本训练次数
EPOCHS = 2
# 总体样本数量
TOTAL_SAMPLE = 5315
# 单卡batch size
BACH_SIZE = 1
# 训练迭代次数（1 iter = 1 batch , 即进行一次前向传播和反向梯度下降）
# total iters = (total sample / batch size) * EPOCHS。若想使用EPOCHS，则需要知道total sample数量，例如 样本数量6000左右，训练集5315，5315 // 4 = 1328（iter）。即1epoch可迭代1328次训练样本5315个样本。
# ITERS = (TOTAL_SAMPLE // BACH_SIZE) * EPOCHS
ITERS = 2000
# 类别数(背景也算，即classes + background)
NUM_CLASSES = 9
# 图像大小
SIZE = (512, 512)
# 模型保存的间隔iter步数
SAVE_ITERS = 10
# 打印日志的间隔iter步数
LOG_ITERS = 1
# 用于异步读取数据的进程数量，大于等于1时开启子进程读取数据
NUM_WORKERS = 0
